#!/bin/bash

# USO: MoverY <archivo origen> <directorio destino>
# $1: Archivo de origen
# $2: Directorio destino

# Retornos:
# 0: Exito
# 1: Numero de parametros incorrectos
# 2: No existe el archivo de origen
# 3: No existe el directorio destino

# Chequeo cantidad de parametros
if [ $# -ne 2 ]; then
	echo 'Cantidad de parametros incorrectos. USO: MoverY.sh <archivo origen> <directorio destino>'
	exit 1
fi

# Transformo los paths relativos a absolutos
DIR_ORIGEN=$(dirname "$(readlink -m "$1")")
DIR_DESTINO=$(readlink -m "$2")

# Verifico existencia de origen y destino
if [ ! -f "$1" ]; then
	"$BINDIR"/GlogY.sh MoverY E "No existe el archivo de origen \"$(readlink -m "$1")\""
	exit 2
elif [ ! -d "$2" ]; then
	"$BINDIR"/GlogY.sh MoverY E "No existe el directorio destino \"$DIR_DESTINO\""
	exit 3
fi

# Verifico que el directorio de origen sea distinto al de destino
if [ "$DIR_ORIGEN" = "$DIR_DESTINO" ]; then
	"$BINDIR"/GlogY.sh MoverY W "El directorio destino coincide con el directorio origen"
	exit 0
fi

# Verifico que no exista ya un archivo del mismo nombre en el directorio destino
NOMBRE_ARCHIVO="${1##*/}"
NOMBRE_DESTINO="${DIR_DESTINO}/${NOMBRE_ARCHIVO}"
if [ -f "$NOMBRE_DESTINO" ]; then
	# Verifico si existe el directorio de duplicados
	DIR_DUPLICADOS="$DIR_DESTINO/dup"
	if [ ! -d "$DIR_DUPLICADOS" ]; then
		mkdir "$DIR_DUPLICADOS"
		NRO_SECUENCIA=1
	else
		# Cuento cuantos archivos hay en la carpeta de duplicados
		NRO_SECUENCIA=$(find "${DIR_DUPLICADOS}/${NOMBRE_ARCHIVO}".[0-9]* -maxdepth 1 -type f | wc -l)
		((NRO_SECUENCIA++))
	fi
	# Cambio los valores de las variables para este caso
	NOMBRE_DESTINO="${DIR_DUPLICADOS}/${NOMBRE_ARCHIVO}.${NRO_SECUENCIA}"
	"$BINDIR"/GlogY.sh MoverY W "Archivo duplicado"
fi

# Hago el movimiento de archivos
mv "$1" "$NOMBRE_DESTINO"
"$BINDIR"/GlogY.sh MoverY I "Se movió el archivo $1 a $NOMBRE_DESTINO"

exit 0
